package data;

import java.util.Collection;
import util.TrackDTO;
import util.TrackAssembler;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class TrackDAO extends HibernateDaoSupport{
	
	/** 
	 * Inserta un objeto Track en la base de
	 *datos mediante el framework hibernate.	 	 
	 * @version 1, 5/10/2014
	 * @param object Objeto de tipo DTO que contiene la informacion que sera insertada en la base de datos.
	 * @return verdadero de ejecutarse la operacion.	 
	 */
	public boolean insert(TrackDTO dto){
		getHibernateTemplate().saveOrUpdate(dto);
		return true;
	}
	
	/** 
	 * Elimina un objeto de la base de
	 *datos mediante el framework hibernate.	 	 
	 * @version 1, 5/10/2014
	 * @param object Objeto de tipo DTO que contiene el id del objeto que se eliminara.
	 * 
	 * @return verdadero de ejecutarse la operacion.	 
	 */
	public boolean delete(TrackDTO dto){
		getHibernateTemplate().delete(dto);
		return true;
	}
	
	/** 
	 * Obtiene un objeto de la base de datos 
	 *datos mediante el framework hibernate.	 	 
	 * @version 1, 5/10/2014
	 * @param id del objeto a eliminar 
	 * @return un objeto de tipo DTO con la informacion consultada de la base de datos.	 
	 */
	public TrackDTO getById(int id){
		TrackDTO dto;
		dto = (TrackDTO)getHibernateTemplate().get(TrackDTO.class,new Integer(id));
		return dto;
	}
	

	/** 
	 * actualiza los datos del registro indicado por el id del Objeto DTO. 
	 *mediante el framework hibernate.	 	 
	 * @version 1, 5/10/2014
	 * @param un DTO con la informacion que se actualizara. 
	 * @return true de completarse correctamente la operacion de actualizacion
	 */
	public boolean update(TrackDTO dto){
		getHibernateTemplate().saveOrUpdate(dto);
		return true;
	}
	
	/** 
	 * Obtiene todos los registros de la tabla Tracks.
	 *mediante el framework hibernate.	 	 
	 * @version 1, 5/10/2014	 
	 * @return una collection de DTOs con la informacion de la tabla Tracks
	 */
	public Collection findAll(){
		return getHibernateTemplate().find("FROM TrackDTO");
	}
}